1. Field of the Invention
The present invention relates to signal processors, such as audio signal processors, executing programs which include delay lines, and to structures for managing the delay lines in memory coupled to such processors.
2. Description of the Related Art
There are a number of music synthesizer architectures in common use. These include subtractive synthesis, wave table synthesis, F/M synthesis, and additive synthesis. A brief discussion of these common synthesis formats is provided in Walker, Korg Wavestation, Peter L. Alexander Publishing Inc., Newbury Park, Calif., 1990, pages 9 through 22. All of these four common synthesis types rely on playing back packaged waveforms, which may be manipulated in real time by the user to generate voices of the synthesizer. The packaged waveforms may consist of simple sine waves, as in the subtractive and FM synthesis formats, or on tables of actual recorded music from real instruments. The tables are typically stored in a compressed format known as Pulse Code Modulation (PCM) on memory chips in the synthesizer circuitry.
The prior art synthesizers based on playback techniques have somewhat limited range of voices that may be created by the instrument. To change the voices available on a given instrument, new sampling hardware must be added, in the form of new PCM tables, or the like.
There is a growing trend in the music synthesizer industry to synthesize sounds using sound generating programs executed by digital signal processors (DSPs). Since programming can be conducted by individual programmers who may not have access to the hardware resources necessary to update a sampling based synthesizer, users of the DSP synthesizers have much greater flexibility in the voices that may be played by their instrument.
These sound generating programs, called voice programs, are based on computational models of musical instruments, the human voice or other sound sources. Thus the developer of a sound generating program typically first defines a computational model of the sound source he or she desires to create, and then writes a computer program to execute the model. Prior art examples of such sound generating programs are described in U.S. Pat. No. 4,984,276, invented by Julius O. Smith, entitled "DIGITAL SIGNAL PROCESSING USING WAVEGUIDE NETWORKS." Delay lines are an important aspect of many sound generating programs, particularly programs which model resonant sound sources.
Dynamic voice allocation in an electronic musical instrument implies the ability to activate an arbitrary sound using whatever sound generation resources (e.g. memory, processors, bus cycles, etc.) are required, regardless of whether or not the resources are currently available. This means if resources are available, they are used immediately, and if resources are not available, they must be "stolen" from whatever voice is currently using them and reallocated to the new voice.
In typical playback based synthesizers, dynamic voice allocation is made possible by restricting the variation of the voice resource requirements to a very limited set that can be changed within a small time interval. Typically this is accomplished by making every voice use the same algorithm (which is usually built into dedicated hardware), share the same PCM data, use the same amounts of memory, and connect to the output using a fixed configuration audio bus. In this scenario, the only differences between voices are a few data values that can be initialized and changed quickly. If resources are not available, they can be made available using "voice stealing" that shuts down an active voice to allow resources allocated to it to be used by a new voice. One prior art system, known as the DPM-3, manufactured by Peavy, uses a DSP engine to execute a voice program. To dynamically change the voice, coefficients used by the single voice program are changed in real time. However, the instructions of the voice program itself cannot be changed in real time, which limits the flexibility of the system.
More recently, variable algorithm DSP systems have been added to some of these playback synthesizers that allow different audio effects processing to be applied to the signals generated by the fixed architecture voice system. However, the effects processing cannot be changed in real time because of the time it takes to make all the necessary changes, such as clearing and initializing delay line memory, in the DSP system to ready it for the new algorithm(s).
Synthesizers designed to execute voice programs utilize powerful digital signal processors to execute in real time. The real time systems have been limited in the number of voices that may be executed in real time, by the resources of the digital signal processor. All the real time voices have to be preloaded in the digital signal processor instruction space. If a voice that was not preloaded needed to be played in real time, an audible interruption of the executing program would occur so that the time consuming process of clearing delay lines, updating tables, initializing coefficients, and supplying the program itself could be carried out. Further, this process was required to displace a voice program already loaded in the instruction space of the DSP, which could cause further audible interruptions or clicks in the output of the machine.
Delay lines in such systems are set up in memory as a string of sequential locations. Thus, a delay line of length L will occupy L sequential memory locations. A circular addressing scheme is used to read the end of the delay line of length L for any particular sampling interval. When a delay line is initialized, all the memory locations in the allocated area must be cleared, so that erroneous reads are not taken to the delay line memory until valid data has been written. In order to change out a program using a delay line, the time required to clear the delay line memory can be significant, particularly for long delay lines.
Accordingly, there is a need to provide for more efficient delay line management in digital signal processing based music synthesizer systems and other real time signal processors.